/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uca.sisbec.actions.reportes;

import com.uca.sisbec.beans.NameAndCarnetBean;
import com.uca.sisbec.commons.HibernateAction;
import com.uca.sisbec.forms.reportes.RecibosForm;
import com.uca.sisbec.helpers.gastos.GastosHelper;
import com.uca.sisbec.helpers.gastos.GastosProyectosHelper;
import com.uca.sisbec.mapping.Gasto;
import com.uca.sisbec.mapping.GastosDeProyectos;
import com.uca.sisbec.mapping.Usuario;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author Alex
 */
public class RecibosAction extends HibernateAction {
    
    public ActionForward init(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {        
        GastosHelper gh = new GastosHelper(getSession(request));
        request.setAttribute("gastosDataReg", gh.GetGastosDelMes("REGISTRADO",3));        
        GastosProyectosHelper gph = new GastosProyectosHelper(getSession(request));
        request.setAttribute("gastosProyDataReg", gph.GetGastosProyectosMesActual("REGISTRADO",3));
        return mapping.findForward("success");
    }
    
    public ActionForward EmitirRecGastoGral(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        RecibosForm rf = (RecibosForm) form;
        GastosHelper gh = new GastosHelper(getSession(request));
        Gasto gasto = gh.EntregarGastoDB(Integer.parseInt(request.getParameter("idGasto")), GetUsuario(request));
        request.setAttribute("objGasto", gasto);
        request.setAttribute("recNo", GenerarNumeroDeRecibo(gasto.getIdGasto()));
        request.setAttribute("fecha",GetFechaActual());
        List<NameAndCarnetBean> listaBecs = gh.ListaBecariosBenef(gasto.getIdGasto());
        request.setAttribute("listaBecs", listaBecs);
        return mapping.findForward("recibo");
    }
    
    public ActionForward EmitirRecGastoProy(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        GastosProyectosHelper gph = new GastosProyectosHelper(getSession(request));
        GastosDeProyectos gdp = gph.EntregarGastoProyDB(Integer.parseInt(request.getParameter("idGasto")), GetUsuario(request));
        request.setAttribute("objGastoProy", gdp);
        request.setAttribute("recNo", GenerarNumeroDeRecibo(gdp.getIdGastosProyecto()));
        request.setAttribute("fecha",GetFechaActual());
        return mapping.findForward("reciboProy");
    }
    
    public ActionForward EmitirRecGastoProyPDF(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        GastosProyectosHelper gph = new GastosProyectosHelper(getSession(request));
        //GastosDeProyectos gdp = gph.GetGastoProyDB(Integer.parseInt(request.getParameter("idGasto")));
        GastosDeProyectos gdp = gph.EntregarGastoProyDB(Integer.parseInt(request.getParameter("idGasto")), GetUsuario(request));
        request.setAttribute("objGastoProy", gdp);
        request.setAttribute("recNo", GenerarNumeroDeRecibo(gdp.getIdGastosProyecto()));
        request.setAttribute("fecha",GetFechaActual());
        return mapping.findForward("reciboProyPDF");
    }
    
    public ActionForward EmitirRecGastoGralPDF(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        GastosHelper gh = new GastosHelper(getSession(request));
        //Gasto gasto = gh.GetGastoDB(Integer.parseInt(request.getParameter("idGasto")));
        Gasto gasto = gh.EntregarGastoDB(Integer.parseInt(request.getParameter("idGasto")), GetUsuario(request));
        List<NameAndCarnetBean> listaBecs = gh.ListaBecariosBenef(gasto.getIdGasto());
        request.setAttribute("objGasto", gasto);
        request.setAttribute("recNo", GenerarNumeroDeRecibo(gasto.getIdGasto()));
        request.setAttribute("fecha",GetFechaActual());
        request.setAttribute("listaBecs", listaBecs);
        return mapping.findForward("reciboPDF");
    }
    
    public ActionForward initViewBenef(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        GastosHelper gh = new GastosHelper(getSession(request));
        Gasto gasto = gh.GetGastoDB(Integer.parseInt(request.getParameter("idG")));
        List<NameAndCarnetBean> listaBecs = gh.ListaBecariosBenef(gasto.getIdGasto());
        request.setAttribute("objGasto", gasto);
        request.setAttribute("listaBecs", listaBecs);
        return mapping.findForward("vistaBeneficiados");
    }
       
    private String GenerarNumeroDeRecibo(Integer idGasto) {
        String fecha = GetFechaActual();
        String recNo = "";
        String[] data = fecha.split("/");
        recNo = data[2] + data[1] + "-" + idGasto.toString();
        return recNo;
    }
    
    private String GetFechaActual() {
        SimpleDateFormat formateador = new SimpleDateFormat("dd'/'MM'/'yyyy", new Locale("es", "ES"));
        Date fechaDate = new Date();
        String fecha = formateador.format(fechaDate);
        return fecha;
    }
    
    private String GetUsuario(HttpServletRequest request){
        Usuario u = (Usuario) request.getSession().getAttribute(_USER);
        return u.getAlias();
    }
    
}
